Application Performance Monitoring (APM) systems monitor the performance and availability of software applications. By detecting and diagnosing complex application performance problems, APM systems can maintain an expected level of service for users of the software applications. When a software application executes on a single component, all of the diagnostic data can be readily and easily accessed from the single component. However, many modern applications are implemented across multiple components, wherein such components may be remotely located from each other and even owned by different entities. For instance, a game executing on an end user computing device or server may make calls to different remote application programming interfaces (APIs) to obtain application information, player and co-player data, history, or the like. Diagnosing and debugging failures across multiple remote components using APM systems is difficult.
To address this issue, APM solutions leverage distributed tracing to obtain the diagnostic data. More specifically, distributed tracing allows the system to follow a user, session or operation across different (i.e., distributed) components and collect telemetry to obtain a holistic view across the application. For instance, an APM system may identify that erratic game play is due to slow performance of a partner API and is not due to core application logic.